import scala.collection.mutable.ArrayBuffer

/**
 * 4）结构体类型
 * 使用的反射
 *
 */

/**
 * 你可以对任何具备append方法的类的实例通过调用appendLines方法
 * 这种比特质更加灵活
 */

object ClassApp04 extends App {

  class A {
    var list: ArrayBuffer[String] = ArrayBuffer[String]()
    def append(s: String):Unit = {
      list += s
    }
    override def toString():String = {
      var r = ""
      for (s <- list) r = r +s +","
        r
    }
  }

  def appendLines (target: { def append(s:String) : Any }, lines: Iterable[String] ) {
    for(l <- lines) {
      target.append(l)
    }
  }
  val a = new A
//  a.append("A")
//  a.append("B")
//  a.append("C")

  appendLines(a, Array("a", "b", "c"))

  println(a)

}